package fr.uniscol.siecle.converters;

import org.apache.log4j.Logger;

import fr.uniscol.model.DonneeUniscol;
import fr.uniscol.model.Etablissement;
import fr.uniscol.model.geo.Academie;
import fr.uniscol.model.geo.Commune;
import fr.uniscol.model.geo.Pays;
import fr.uniscol.siecle.model.DonneeSiecle;
import fr.uniscol.siecle.model.UAJ;

public class EtablissementSiecleConverter implements IDonneeSiecleConverter {

	private static Logger log = Logger.getLogger(EtablissementSiecleConverter.class);
	
	public DonneeUniscol convertDonneeSiecle(DonneeSiecle donneeSiecle) {

		if(donneeSiecle == null || !(donneeSiecle instanceof UAJ)){
			return null;
		}
		
		UAJ uaj = (UAJ)donneeSiecle;
		Etablissement etab = new Etablissement(uaj.getUaj(), uaj.getDenominationPrincipale());
		etab.setAdresse1(uaj.getAdresse1());
		etab.setAdresse2(uaj.getAdresse2());
		etab.setAdresse3(uaj.getAdresse3());
		etab.setCodePostal(uaj.getCodePostal());
		etab.setBoitePostale(uaj.getBoitePostale());
		etab.setTelephone(uaj.getTelephone());
		etab.setEmail(uaj.getMail());
		
		if(uaj.getAcademie() != null){
			etab.setAcademie(new Academie());
			etab.getAcademie().setCode(uaj.getAcademie().getCode());
		}
		if(uaj.getCommune() != null){
			etab.setCommune(new Commune());
			etab.getCommune().setCodeInsee(uaj.getCommune().getCode());
		}
		if(uaj.getPays() != null){
			etab.setPays(new Pays());
			etab.getPays().setCode(uaj.getPays().getCode());
		}
		
		return etab;
	}

	public DonneeSiecle convertDonneeUniscol(DonneeUniscol donneeUniscol) {
		
		if(donneeUniscol == null || !(donneeUniscol instanceof Etablissement)){
			return null;
		}
		
		Etablissement etab = (Etablissement) donneeUniscol;
		UAJ uaj = new UAJ();
		
		uaj.setUaj(etab.getUai());
		uaj.setDenominationPrincipale(etab.getNom());
		
		log.debug(etab.getUai() + " => " + uaj.getUaj());
		log.debug(etab.getNom() + " => " + uaj.getDenominationPrincipale());
		
		return uaj;
	}
}
